const diameterOfBinaryTree = (root) => {
  let ans = 1; // 根结点自身的路径长度
  function depth(root) {
    if (!root) return 0;
    let left = depth(root.left);
    let right = depth(root.right);
    ans = Math.max(ans, left + right + 1); // 获取该树的最长路径和现有最长路径中最大的那个
    return Math.max(left, right) + 1; // 这里的 1 代表的是根节点
  }
  depth(root);
  return ans - 1; // 由于 depth 函数中已经默认加上结点的自身根结点路径，故此处需要减一
};
